home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 November: Tool Chest / Dev.CD Nov 94.toast / Sample Code / Snippets / QuickDraw / Icon Display / bullseye.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-10-05  |  2.6 KB  |  160 lines  |  [TEXT/KAHL]

  1. /*****
  2.  * bullseye.c
  3.  *
  4.  *    A simple demonstration program to play with the debugger
  5.  *
  6.  *
  7.  *****/
  8.  
  9. /* MacHeaders Included */
  10.  
  11.  
  12. extern    WindowPtr    bullseyeWindow;
  13. extern    Rect        dragRect;
  14. extern  Rect        PlotRect;
  15.  
  16.  
  17. /****
  18.  * InitMacintosh()
  19.  *
  20.  * Initialize all the managers & memory
  21.  *
  22.  ****/
  23.  
  24. InitMacintosh()
  25.  
  26. {
  27.     MaxApplZone();
  28.     
  29.     InitGraf(&thePort);
  30.     InitFonts();
  31.     FlushEvents(everyEvent, 0);
  32.     InitWindows();
  33.     InitMenus();
  34.     TEInit();
  35.     InitDialogs(0L);
  36.     InitCursor();
  37.  
  38. }
  39. /* end InitMacintosh */
  40.  
  41.  
  42. /****
  43.  * HandleMouseDown (theEvent)
  44.  *
  45.  *    Take care of mouseDown events.
  46.  *
  47.  ****/
  48.  
  49. HandleMouseDown(theEvent)
  50.  
  51.     EventRecord    *theEvent;
  52.  
  53. {
  54.     WindowPtr    theWindow;
  55.     int            windowCode = FindWindow (theEvent->where, &theWindow);
  56.     
  57.     switch (windowCode)
  58.       {
  59.       case inSysWindow: 
  60.         SystemClick (theEvent, theWindow);
  61.         break;
  62.         
  63.       case inMenuBar:
  64.           AdjustMenus();
  65.         HandleMenu(MenuSelect(theEvent->where));
  66.         break;
  67.         
  68.       case inDrag:
  69.           if (theWindow == bullseyeWindow)
  70.             DragWindow(bullseyeWindow, theEvent->where, &dragRect);
  71.             FindNewDevice(bullseyeWindow);  /* see if the device has changed and inval small icon if so*/
  72.             break;
  73.             
  74.       case inContent:
  75.           if (theWindow == bullseyeWindow)
  76.             {
  77.             if (theWindow != FrontWindow())
  78.               SelectWindow(bullseyeWindow);
  79.             else
  80.               InvalRect(&bullseyeWindow->portRect);
  81.             }
  82.           break;
  83.           
  84.       case inGoAway:
  85.           if (theWindow == bullseyeWindow && 
  86.               TrackGoAway(bullseyeWindow, theEvent->where))
  87.           HideWindow(bullseyeWindow);
  88.             break;
  89.       }
  90. }
  91. /* end HandleMouseDown */
  92.  
  93.  
  94. /****
  95.  * HandleEvent()
  96.  *
  97.  *        The main event dispatcher. This routine should be called
  98.  *        repeatedly (it  handles only one event).
  99.  *
  100.  *****/
  101.  
  102. HandleEvent()
  103.  
  104. {
  105.     int            ok;
  106.     EventRecord    theEvent;
  107.  
  108.     HiliteMenu(0);
  109.     SystemTask ();        /* Handle desk accessories */
  110.     
  111.     ok = GetNextEvent (everyEvent, &theEvent);
  112.     if (ok)
  113.       switch (theEvent.what)
  114.         {
  115.         case mouseDown:
  116.             HandleMouseDown(&theEvent);
  117.             break;
  118.             
  119.         case keyDown: 
  120.         case autoKey:
  121.             if ((theEvent.modifiers & cmdKey) != 0)
  122.               {
  123.               AdjustMenus();
  124.               HandleMenu(MenuKey((char) (theEvent.message & charCodeMask)));
  125.               }
  126.             break;
  127.             
  128.         case updateEvt:
  129.             BeginUpdate(bullseyeWindow);
  130.             DrawBullseye(((WindowPeek) bullseyeWindow)->hilited);
  131.             EndUpdate(bullseyeWindow);
  132.             break;
  133.             
  134.         case activateEvt:
  135.             InvalRect(&bullseyeWindow->portRect);
  136.             break;
  137.         }
  138. }
  139. /* end HandleEvent */
  140.  
  141.  
  142. /*****
  143.  * main()
  144.  *
  145.  *    This is where everything happens
  146.  *
  147.  *****/
  148.  
  149.  
  150. main()
  151.  
  152. {
  153.     InitMacintosh();
  154.     SetUpMenus();
  155.     SetUpWindow();
  156.     
  157.     for (;;)
  158.         HandleEvent();
  159. }
  160. /* end main */